package com.hmall.mapper;

import com.hmall.model.MallCart;
import com.hmall.util.MyMapper;
import com.hmall.vo.CartProductVo;
import com.hmall.vo.ShopVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
@Repository
public interface MallCartMapper extends MyMapper<MallCart> {

    CartProductVo selectCartByUserIdProductId(@Param("userId") Integer userId, @Param("productId") Integer productId, @Param("grade") String grade);
    //根据用户id 等级 产品等 查询购物车id

    int selectCartIdByGrdWtPrUsr(@Param("userId") Integer userId, @Param("productId") Integer productId, @Param("weight") BigDecimal weight, @Param("grade") String grade);

    List<CartProductVo> selectCartByUserId(@Param("userId") Integer userId);

    String selectGradeMaxPrice(@Param("productId") Integer productId);

    //查询用户的 商户所有的产品
    List<CartProductVo> selectCartShopUserId(@Param("userId") Integer userId, @Param("shopId") Integer shopId);

    //查询用户的 商户已选中的产品
    List<CartProductVo> selectCheckedCartShopUserId(@Param("userId") Integer userId, @Param("shopId") Integer shopId);

    int selectCartProductCheckedStatusByUserId(Integer userId);

    //查询所有购物车商家
    List<ShopVo> selectShopIdsByUserId(@Param("userId") Integer userId);

    //查询已选中的商家
    List<ShopVo> selectCheckedShopIdsByUserId(@Param("userId") Integer userId);

    int myInsert(@Param("userId") Integer userId, @Param("productId") Integer productId, @Param("weight") Integer weight, @Param("checked") Integer checked);

    int checkedOrUncheckedProduct(@Param("userId") Integer userId, @Param("cartId") Integer cartId, @Param("checked") Integer checked);

    //商家全选
    int shopCheckedProduct(@Param("userId") Integer userId, @Param("shopId") Integer shopId);

    //商家取消选
    int shopUnCheckedProduct(@Param("userId") Integer userId, @Param("shopId") Integer shopId);

    int selectCartProductCount(@Param("userId") Integer userId);

    List<MallCart> selectCheckedCartByUserId(Integer userId);

    //查询用户的商家id购物车产品
    List<MallCart> selectCheckedCartByByShopId(@Param("userId") Integer userId, @Param("shopId") Integer shopId);

    //查询用户的购物车产品
    List<Map<String,Object>> selectCheckedCartByUserIdproList(Integer userId);

    //查询用户的所有购物车产品
    List<Map<String,Object>> selectAllCartByUserIdproList(Integer userId);

//    void updateCartOnlyWeight(@Param("cart") CartProductVo cart);
    void updateCartOnlyWeight(@Param("cart") CartProductVo cart, @Param("weight") BigDecimal weight);

    void deleteByUserIdcartIds(@Param("userId") Integer userId, @Param("cartIdList") List<String> cartIdList);

    void deleteBycartIds(@Param("cartIdList") List<String> cartIdList);

    void updateCheckStatusWithUserId(@Param("userId") Integer userId, @Param("status") int status);

    void updateCheckByProduct(@Param("productId") Integer id, @Param("status") int isChecked, @Param("userId") int userId);
}

